Rによるデータ分析

Rによる2部グラフ

2部グラフネットワークグラフ の一種です。

multigraph

2部グラフは、multigraphが使いやすいようです。

一番簡単な使い方

(1) パソコンに、R、をダウンロードして、インストールする。
(2) multigraphをダウンロードして、Rのモジュールとして使えるようにしておく。
(3) Cドライブに「Rtest」というフォルダを作る。
(4) 1行目と1列目に、頂点の名前が書いてある数値データを、「Data.csv」というcsvファイルにして、「Rtest」フォルダに置く。

グラフの例

library(multigraph) # パッケージを読み込み
setwd("C:/Rtest") # 作業用ディレクトリを変更
DM <- read.csv("Data.csv", header=T, row.names=1) # データを読み込み。拡張子は、列名、行名の読み込み
bmgraph(DM) # グラフを作る
グラフの例

線の太さを変える

一番簡単な使い方では、データが0かどうかで線が引かれるため、値がいろいろあっても太さは同じになります。 値と太さを対応させたい時は、valuedを使います。

bmgraph(DM, valued = TRUE) # グラフを作る
グラフの例

レイアウトを変える

レイアウトは様々なものが用意されています。

bmgraph(DM, valued = TRUE, layout = "bipc") # グラフを作る
グラフの例
デフォルトと左右が変わっています。

bmgraph(DM, valued = TRUE, layout = "circ") # グラフを作る
グラフの例

bmgraph(DM, valued = TRUE, layout = "circ2") # グラフを作る
グラフの例

bmgraph(DM, valued = TRUE, layout = "stress") # グラフを作る
グラフの例

bmgraph(DM, valued = TRUE, layout = "CA") # グラフを作る
グラフの例

bmgraph(DM, valued = TRUE, layout = "bip3") # グラフを作る
グラフの例

bmgraph(DM, valued = TRUE, layout = "bip3e") # グラフを作る
グラフの例

bmgraph(DM, valued = TRUE, layout = "force", directed = TRUE) # グラフを作る
グラフの例

bmgraph(DM, valued = TRUE, layout = "rand", directed = TRUE) # グラフを作る
グラフの例

字の大きさや色を変える

bmgraph(DM, valued = TRUE, fsize = 9, cex = 3, pch = c(15, 17), vcol = 3:2) # グラフを作る
グラフの例

igraphによる2部グラフ

igraphでも2部グラフが作れますが、少々手間が多いです。

一番簡単な使い方

グラフの例

library(igraph) # パッケージを読み込み
setwd("C:/Rtest") # 作業用ディレクトリを変更
DM <- read.csv("Data.csv", header=T, row.names=1) # データを読み込み。拡張子は、列名、行名の読み込み
DM.mat = as.matrix(DM) # データフレームを行列として読み込み
DM.g<-graph_from_incidence_matrix(DM.mat) # グラフ用のデータを作る
plot(DM.g, layout = layout_as_bipartite) # グラフを作る
グラフの例

線の太さを変える

一番簡単な使い方では、データが0かどうかで線が引かれるため、値がいろいろあっても太さは同じになります。 値と太さを対応させたい時は、valuedを使います。

DM.g<-graph_from_incidence_matrix(DM.mat,weighted=T) # グラフ用のデータを作る
plot(DM.g, edge.width=E(DM.g)$weight, layout = layout_as_bipartite) # グラフを作る
グラフの例

マークの色と形を変える

DM.g<-graph_from_incidence_matrix(DM.mat,weighted=T) # グラフ用のデータを作る
V(DM.g)$color <- c("steel blue", "orange")[V(DM.g)$type+1] # 色を変える
V(DM.g)$shape <- c("square", "circle")[V(DM.g)$type+1] # マークの形を変える
plot(DM.g, edge.width=E(DM.g)$weight, layout = layout_as_bipartite) # グラフを作る
グラフの例

マークを使わない

DM.g<-graph_from_incidence_matrix(DM.mat,weighted=T) # グラフ用のデータを作る
V(DM.g)$color <- c("steel blue", "orange")[V(DM.g)$type+1] # 色を変える
plot(DM.g, edge.width=E(DM.g)$weight, layout = layout_as_bipartite, vertex.shape="none", vertex.label.color=V(DM.g)$color) # グラフを作る
グラフの例

レイアウトを変える

これはデフォルトのレイアウトです。 デフォルトのレイアウトとデフォルトのマークを使うと2部グラフかわかならいグラフになるため、ここではマークの色と形を変えています。

DM.g<-graph_from_incidence_matrix(DM.mat,weighted=T) # グラフ用のデータを作る
V(DM.g)$color <- c("steel blue", "orange")[V(DM.g)$type+1] # 色を変える
V(DM.g)$shape <- c("square", "circle")[V(DM.g)$type+1] # マークの形を変える
plot(DM.g, edge.width=E(DM.g)$weight) # グラフを作る
グラフの例



参考文献

multigraph

CRANのマニュアルです。 すべての引数が書かれていますが、絵がありません。
https://cran.r-project.org/web/packages/multigraph/multigraph.pdf


配色の設定は、これを参考にさせていただきました。
https://github.com/mplex/multigraph


「Rで解析:ネットワーク図や2部グラフをプロット!!「multigraph」パッケージ」
数少ない日本語のページです。
https://www.karada-good.net/analyticsr/r-553


igraphによる2部グラフ

igraphの日本語による解説は多いですが、2部グラフについて書かれているものはあまりないようです。
https://kateto.net/wp-content/uploads/2018/06/Polnet%202018%20R%20Network%20Visualization%20Workshop.pdf





Rによるデータ分析

データサイエンス教室